home *** CD-ROM | disk | FTP | other *** search
- /* The <fcntl.h> header is needed by the open() and fcntl() system calls,
- * which have a variety of parameters and flags. They are described here.
- * The formats of the calls to each of these are:
- *
- * open(path, oflag [mode]) open a file
- * fcntl(fd, cmd,[ arg]) get or set file attributes
- *
- */
-
- #ifndef _FCNTL_H
- #define _FCNTL_H
-
- /* These values are used for cmd in fcntl(). POSIX Table 6-1. */
- #define F_DUPFD 0 /* duplicate file descriptor */
- #define F_GETFD 1 /* get file descriptor flags */
- #define F_SETFD 2 /* set file descriptor flags */
- #define F_GETFL 3 /* get file status flags */
- #define F_SETFL 4 /* set file status flags */
- #define F_GETLK 5 /* get record locking information */
- #define F_SETLK 6 /* set record locking information */
- #define F_SETLKW 7 /* set record locking info; wait if blocked */
-
- /* File descriptor flags used for fcntl(). POSIX Table 6-2. */
- #define FD_CLOEXEC 1 /* close on exec flag for third arg of fcntl */
-
- /* L_type values for record locking with fcntl(). POSIX Table 6-3. */
- #define F_RDLCK 0 /* shared or read lock */
- #define F_WRLCK 1 /* exclusive or write lock */
- #define F_UNLCK 2 /* unlock */
-
- /* Oflag values for open(). POSIX Table 6-4. */
- #define O_CREAT 001000 /* creat file if it doesn't exist */
- #define O_EXCL 004000 /* exclusive use flag */
- #define O_NOCTTY 040000 /* do not assign a controlling terminal */
- #define O_TRUNC 002000 /* truncate flag */
- #ifdef KERNEL
- #define O_FIRSTOPEN 010000
- #define O_LASTCLOSE 020000
- /* used in fs */
- #define O_LEGAL (O_WRONLY|O_RDWR|O_NONBLOCK|O_APPEND|O_CREAT|O_TRUNC|O_EXCL)
- #define F_FL_LEGAL (O_NONBLOCK|O_APPEND)
- #endif
-
- /* File status flags for open() and fcntl(). POSIX Table 6-5. */
- #define O_APPEND 00010 /* set append mode */
- #define O_NONBLOCK 00004 /* no delay */
-
- /* File access modes for open() and fcntl(). POSIX Table 6-6. */
- #define O_RDONLY 0 /* open(name, O_RDONLY) opens read only */
- #define O_WRONLY 1 /* open(name, O_WRONLY) opens write only */
- #define O_RDWR 2 /* open(name, O_RDWR) opens read/write */
-
- /* Mask for use with file access modes. POSIX Table 6-7. */
- #define O_ACCMODE 03 /* mask for file access modes */
-
- /* Struct used for locking. POSIX Table 6-8. */
- struct flock {
- short l_type; /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
- short l_whence; /* flag for starting offset */
- off_t l_start; /* relative offset in bytes */
- off_t l_len; /* size; if 0, then until EOF */
- pid_t l_pid; /* process id of the locks' owner */
- };
-
-
- /* Function Prototypes. */
- #ifndef _ANSI_H
- #include <ansi.h>
- #endif
-
- _PROTOTYPE( int creat, (const char *__path, int __mode) );
- #ifdef __SRC__
- _PROTOTYPE( int fcntl, (int __filedes, int __cmd, int arg) );
- _PROTOTYPE( int open, (const char *__path, int __oflag, int __mode) );
- #else
- _PROTOTYPE( int fcntl, (int __filedes, int __cmd, ...) );
- _PROTOTYPE( int open, (const char *__path, int __oflag, ...) );
- #endif
-
- #endif /* _FCNTL_H */
-